type UnshiftResult = Unshift<[1, 2], 0> // [0, 1, 2,]

type Unshift<A extends unknown[], T extends unknown> = [T, ...A]